keyof T
keyof Tで、TのpropertyのUnion型を取得できる
Tがrecordの時
code:TypeScript
type Person = { name: string; age: number; };
type A = keyof Person; // "name" | "age"
code:ts
type Hoge = { foo(): void; };
type A = keyof Hoge // foo
code:ts
type A = keyof Hoge // string | number
使用例
Tがarray, tupleの時
中身のunionではなく、indexのunionになっていることに注意mrsekut.icon
code:ts
type tupleKeys = keyof tuple;
const v1: tupleKeys = 'a'; // error. indexの話なのでerrorになる。わかる。
const t1: tupleKeys = 1; // ok. わかる
const t6: tupleKeys = 6; // ok. わからん. なぜか?
なぜ、tupleのときに、要素数を超えてもエラーにならないか?
これはkeyof tupleの中身を覗いたらわかるmrsekut.icon
type tupleKeys = keyof tuple;と書いただけじゃ中身が見えないが、
こう書くと見える
code:ts
/**
* type A = {
* readonly 0: 4;
* readonly 1: 4;
* readonly 2: 4;
* readonly 3: 4;
* length: 4;
* toString: 4;
* toLocaleString: 4;
* concat: 4;
* ... 19 more ...;
* }
*/
1行目の[x: number]のせいmrsekut.icon